package cn.kone.config;

import org.apache.rocketmq.client.consumer.DefaultMQPullConsumer;
import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.common.protocol.heartbeat.MessageModel;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * RocketMQ 配置类 创建MQ的拉取模式的消费者
 */

@Configuration
public class MqConfig {
    // 使用@Bean注解声明一个Spring Bean，该Bean用于创建消息拉取消费者
    @Bean
    public DefaultMQPullConsumer pullConsumer() {
        // 创建一个消息拉取消费者实例，传入消费者组名称作为参数
        DefaultMQPullConsumer pullConsumer = new DefaultMQPullConsumer("service-order-consumer");
        // 设置消费者消息模式为集群模式
        pullConsumer.setMessageModel(MessageModel.CLUSTERING);
        // 设置NameServer地址为localhost:9876，该地址用于获取消息队列的路由信息
        pullConsumer.setNamesrvAddr("localhost:9876");
        try {
            // 启动消息拉取消费者
            pullConsumer.start();
            // 返回创建的消息拉取消费者实例
            return pullConsumer;
        } catch (MQClientException e) {
            throw new RuntimeException(e);
        }
    }
}
